import net from 'net'
/* 服务端之间的通讯可以直接使用TCP通讯，而不需要上升到http层
 创建一个TCP服务，并且发送套接字，监听端口号3000 */
// const server = net.createServer(socket => {
//   setInterval(() => {
//     socket.write('XiaoMan')
//   }, 1000)
// })
// server.listen(3000, () => {
//   console.log('listening on 3000')
// })

// 从传输层实现http协议
const http1 = net.createServer(socket => {
  // net.createServer创建 Unix 域套接字并且返回一个server对象接受一个回调函数
  socket.on('data', data => {
     /* 
        close 一旦套接字完全关闭就触发
        connect 当成功建立套接字连接时触发
        data 接收到数据时触发
        end 当套接字的另一端表示传输结束时触发，从而结束套接字的可读端
      */
    console.log(data.toString())
  })
})
http1.listen(3000, () => {
  console.log('listening on 3000')
})

/* 3 */
const html = `<h1>TCP Server</h1>`
const reposneHeader = [
  'HTTP/1.1 200 OK',
  'Content-Type: text/html',
  'Content-Length: ' + html.length,
  'Server: Nodejs',
  '\r\n',
  html,
]

const http = net.createServer(socket => {
  socket.on('data', data => {
    /* GET / HTTP/1.1 
    Host: localhost:3000 */
    if (/GET/.test(data.toString())) {
      socket.write(reposneHeader.join('\r\n'))
      socket.end()
    }
  })
})
http.listen(3000, () => {
  console.log('listening on 3000')
})
